﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NUnit.Framework;
using CondominioWeb.Persistencia.NHibernate;
using CondominioWeb.Dominio;

namespace CondominioWeb.Pruebas
{
    [TestFixture]
    public class TestEdificioDAO
    {
        private EdificioDAO edificioDao = new EdificioDAO();
        [Test]
        public void TestCrear()
        {
            Zona Zona = new Zona();
            Zona.Codigo_Zona = 2;

            Edificio EdificioNuevo = new Edificio();
            EdificioNuevo.Codigo_Edificio = 2;
            EdificioNuevo.Descripcion = "Edificio 2";
            EdificioNuevo.oZona = Zona;
            EdificioNuevo.Estado = "Activo";

            Edificio EdificioCreado = edificioDao.Crear(EdificioNuevo);
            // Implementar las validaciones
            Assert.NotNull(EdificioCreado);
            Assert.AreEqual(EdificioNuevo.Codigo_Edificio, EdificioCreado.Codigo_Edificio);
        }

        [Test]
        public void TestModificar()
        {
            Zona Zona = new Zona();
            Zona.Codigo_Zona = 2;

            Edificio EdificioNuevo = new Edificio();
            EdificioNuevo.Codigo_Edificio = 2;
            EdificioNuevo.Descripcion = "Edificio 22";
            EdificioNuevo.oZona = Zona;
            EdificioNuevo.Estado = "Activo";

            Edificio EdificioCreado = edificioDao.Modificar(EdificioNuevo);
            // Implementar las validaciones
            Assert.NotNull(EdificioCreado);
            Assert.AreEqual(EdificioNuevo.Codigo_Edificio, EdificioCreado.Codigo_Edificio);
        }

        [Test]
        public void TestObtener()
        {
            int _cod_Edificio;
            // 1. Instanciando el objeto TO
            // 2. Llamada al método del DAO a probar
            _cod_Edificio = 1;
            Edificio EdificioConsulta = edificioDao.Obtener(_cod_Edificio);

            // 4. Implementar las validaciones
            Assert.NotNull(EdificioConsulta);
            Assert.AreEqual(EdificioConsulta.Codigo_Edificio, _cod_Edificio);
            Assert.IsNotNull(EdificioConsulta.Descripcion);
        }
        [Test]
        public void TestEliminar()
        {
            // 1. Instanciando el objeto TO
            Edificio oEdificio = new Edificio();
            oEdificio.Codigo_Edificio = 1;
            // 2. Llamada al método del DAO a probar
            Assert.Catch<Exception>(delegate
            {
                edificioDao.Eliminar(oEdificio);
            });
            Assert.DoesNotThrow(delegate
            {
                edificioDao.Eliminar(oEdificio);
            });

            // 3. Implementar las validaciones
            Assert.NotNull(oEdificio);
            Assert.NotNull(oEdificio.Codigo_Edificio);


        }

    }
}